#ifndef PARAM_MANAGER_H
#define PARAM_MANAGER_H

#include <QObject>  // 包含 QObject 头文件

namespace isp_tuning {

// 参数数据结构
//  元数据
struct RawMetadata {
    int width;          // 图像宽度
    int height;         // 图像高度
    int sensorBits;     // 传感器位宽
    int bayerPattern;   // Bayer 模式
};


class param_manager : public QObject {
    Q_OBJECT  // 启用 Qt 的元对象系统

public:
    // 获取单例实例
    static param_manager* getInstance() {
        static param_manager instance;  // 静态局部变量，确保唯一实例
        return &instance;
    }

    // 1. 元数据的操作////////////////////////////////////////////////////////
    // 设置元数据
    void set_raw_metadata(const RawMetadata& metadata);

    // 获取元数据
    RawMetadata get_raw_metadata() const;

    // 更新元数据
    void update_raw_metadata(int width, int height, int sensorBits, int bayerPattern);




    // 2. 文件路径的操作////////////////////////////////////////////////////
    // 设置文件路径
    void set_file_path(const QString& file_path);

    // 获取文件路径
    QString get_file_path() const;

private:
    // 私有构造函数，防止外部创建实例
    explicit param_manager(QObject* parent = nullptr);

    RawMetadata raw_metadata;  // 存储元数据

    QString file_path;         // 存储文件路径
};

} // namespace isp_tuning

#endif // PARAM_MANAGER_H
